#!/bin/bash
# 本地验证脚本：支持重复实验+自动清理结果（如需保留结果可注释清理部分）
# 使用方法：chmod +x experiments/run_local_verify.sh && ./experiments/run_local_verify.sh [重复次数]
# 示例：./experiments/run_local_verify.sh 3 （执行3次重复实验）

# 设置默认重复次数（未指定时默认1次）
RUNS=${1:-1}
echo "本次实验重复次数: $RUNS"

# 定义实验配置（模型列表）
MODELS=(
    "multi_scale_cnn"
    "simple_cnn"
    "lenet5"
    # 消融实验（可选）
    "multi_scale_cnn --use_branch3 false"
)

# 定义需要清理的结果目录前缀（与代码输出路径对应）
RESULT_PREFIX="results_"
# 本地数据目录
DATA_DIR="./data"

# 循环执行所有模型的重复实验
for model in "${MODELS[@]}"; do
    echo "=================================================="
    echo "开始模型实验: $model"
    echo "总重复次数: $RUNS"
    echo "开始时间: $(date)"
    echo "=================================================="

    # 执行重复实验
    for ((run_id=0; run_id<RUNS; run_id++)); do
        echo -e "\n----- 实验轮次 $((run_id+1))/$RUNS -----"
        # 执行训练命令（带--runs 1确保单轮独立，中文日志由代码保证）
        RUN_ENV=local python experiments/train_mnist.py --model $model --runs 1

        # 检查命令执行结果，出错立即退出
        if [ $? -ne 0 ]; then
            echo "❌ 轮次 $((run_id+1)) 执行失败: $model"
            exit 1
        fi
    done

    echo "=================================================="
    echo "✅ 模型 $model 所有 $RUNS 轮实验完成"
    echo "完成时间: $(date)"
    echo "=================================================="
    echo ""
done

echo "🎉 所有本地验证实验已完成！"
echo "结果保存路径: ./$RESULT_PREFIX*"

# 询问是否清理实验结果（按需选择）
read -p "是否删除本次实验生成的结果文件？(y/N) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    # 清理结果目录
    for dir in $(find . -maxdepth 1 -type d -name "${RESULT_PREFIX}*"); do
        echo "删除结果目录: $dir"
        rm -rf "$dir"
    done
    echo "✅ 实验结果已清理"
else
    echo "ℹ️ 保留实验结果"
fi

# 自动清理本地数据（与之前逻辑一致）
if [ -d "$DATA_DIR" ]; then
    echo "开始清理本地数据目录..."
    rm -rf "$DATA_DIR"
    if [ $? -eq 0 ]; then
        echo "✅ 本地数据目录已删除: $DATA_DIR"
    else
        echo "⚠️ 清理数据目录失败，请手动删除: $DATA_DIR"
    fi
else
    echo "ℹ️ 未找到本地数据目录，无需清理"
fi